// 定义一个关于counter的store
import { defineStore} from 'pinia'
import useUser from './user'


const useCounter = defineStore('counter', { // counter是store的名字,唯一标识,这里返回一个函数,一般用use和store命名
  state: () => ({
    count: 2,
    friends: [
      // {id: 001, name: 'why'}, // Legacy octal literals are not allowed in strict mode
      {id: 101, name: 'why'},
      {id: 102, name: 'kobe'}
    ]
  }),
  getters: {
    // 1. 基本使用
    doubleCount(state) {
      return state.count * 2
    },
    // 2. 一个getters可以调用另一个getters
    doubleCountAddOne(state) {
      // this 代表当前store实例
      return this.doubleCount + 1
    },
    // 3. getters可以返回函数
    getFriendById: (state) => {
      return (id) => {
        return state.friends.find(friend => friend.id === id)
      }
    },
    // 4. getters中用到了其他store中的数据
    showMessage(state) {
      const userStore = useUser()
      return `name : ${userStore.name} --- age: ${userStore.age} --- count: ${state.count}}`
    }
  },
  actions: {
    increment(state) { // 这里不会传入state,而是外部调用传入d的数
      console.log(state)
      this.count++
    },
    incrementNum(n) {
      console.log(n)
      this.count += n
    }
  }
})

// const usrCounter = useCounter()
export default useCounter